package com.wzl.algorithm;

import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.Arrays;

/**冒泡排序, 稳定
 * （无序区，有序区）。从无序区通过交换找出最大元素放到有序区前端。
 * 选择排序思路：
 * 1. 比较相邻的元素。如果第一个比第二个大，就交换他们两个。
 * 2. 对每一对相邻元素作同样的工作，从开始第一对到结尾的最后一对。这步做完后，最后的元素会是最大的数。
 * 3. 针对所有的元素重复以上的步骤，除了最后一个。
 * 4. 持续每次对越来越少的元素重复上面的步骤，直到没有任何一对数字需要比较。
 * @author weiZhiLin
 * @version 1.0
 * @date 2020/1/9 11:15
 */
public class BubbleSort {

    public static int[] sort(int[] a) {
        for (int i = a.length-1; i >0 ; i--) {
            // 注意 j < i
            for (int j = 0; j < i; j++) {
                if (a[j] > a[j+1]) {
                    a = SortUtils.arraySwap(a, j, j+1);
                }
            }
        }
        SortUtils.printArr(a);
        return a;
    }


    // 错了 这是选择排序
    /*public static int[] sort(int[] a) {
        for (int i = 0; i < a.length; i++) {
            // 注意 j=i+1
            for (int j = i+1; j < a.length; j++) {
                if (a[i] > a[j]) {
                    a = SortUtils.arraySwap(a, j, i);
                }
            }
        }
        SortUtils.printArr(a);
        return a;
    }*/
}
